/* 逻辑
  1.页面被打开 onShow
    0.onShow不同于onLoad 无法再行参上接收options参数
    0.1判断缓存中有无token
      没有的话呢 跳转到授权页面
      有的话 继续往下执行
    1.获取url的参数 type
    2.根据type 决定标题标签的激活选中状态
    2.根据type 发送请求获取订单数据
    3.渲染页面
  2.点击不同的tab 重新发送请求获取和渲染数据
*/
import {
  request
} from "../../request/request.js";
import regeneratorRuntime from "../../lib/runtime/runtime.js";
Page({
  data: {
    orders: [],
    tabs: [{
      id: 0,
      value: "全部",
      isActive: true
    }, {
      id: 1,
      value: "待付款",
      isActive: false
    }, {
      id: 2,
      value: "待发货",
      isActive: false
    }, {
      id: 3,
      value: "退款/退货",
      isActive: false
    }]
  },
  onShow(options) {
    const token = wx.getStorageSync("token");
    if (!token) {
      wx.navigateTo({
        url: '/pages/auth/auth'
      });
      return;
    }
    //1.获取小程序的页面栈 长队最大是10页面
    let pages = getCurrentPages();
    //2.数组中索引最大的页面就是当前页面
    //3.里面可以拿到传递的options:{"type":1}
    let currentPage = pages[pages.length - 1];
    //4.选中页面标题 当type=1 index=0
    this.changeTitleByIndex(type-1);
    //4.获取url上的参数
    const {type} = currentPage.options;
    this.getOrders(type);
  },
  // 获取订单列表的方法
  async getOrders(type) {
    const res = await request({
      url: "/my/orders/all",
      data: {
        type
      }
    });
    this.setData({
      orders: res.orders.map(v=>({...v,create_time_cn:(new Date(v.create_time*1000).toLocaleString())}))
    })
  },

  // 根据标题索引 来决定标题的激活选中
  changeTitleByIndex(index) {
    //修改原数组
    let {tabs} = this.data;
    tabs.forEach((v, i) => i === index ? v.isActive = true : v.isActive = false);
    //3.赋值到data中
    this.setData({
      tabs
    })
  },

  handleTabsItemChange(e) {
    //1.获取被点击的标题索引
    const {index} = e.detail;
    this.changeTitleByIndex(index);
    //2.重新发送请求 type=1 index=0
    this.getOrders(index+1);
  }
})